'use strict';

const Controller = require('egg').Controller;
const md5 = require('md5')

class LoginController extends Controller {
  async login() {
    const { ctx, app } = this
    // 前端提交的数据
    const loginInfo = ctx.request.body
    // 数据库查询的数据
    const userInfo = await ctx.service.user.findByUsername(loginInfo.username)
    // md5加密前端提交的密码
    const md5Password = md5(loginInfo.password)
    // 用户名不存在
    if (userInfo === null) {
      ctx.body = {
        code: 1,
        msg: '用户名或密码不正确'
      }
      return
    }

    // 输入密码不正确
    if (md5Password !== userInfo.password) {
      ctx.body = {
        code: 1,
        msg: '用户名或密码不正确'
      }
      return
    }

    // 用户名和密码验证通过
    const token = app.jwt.sign({
      username: loginInfo.username
    }, app.config.jwt.config, {
      expiresIn: '7 days'
    })
    ctx.body = {
      code: 0,
      msg: '登录成功',
      token,
      username: userInfo.username
    }
  }
}

module.exports = LoginController;
